/*
众所周知，琪露诺(チルノ，Cirno)是幻想郷(げんそうきょう)中首屈一指的天才，可以说⑨就是她的代名词。

然而如今，她遇到了一个和⑨有关的难题。你能帮助她么？

题目是这样的，给出两个数 a 和 b(0 <= a <= b <= 10 ^ 10000)，求 a 到 b 之间(包括a和b)的数字中，有多少个数字是包含9的（例如 19，910 等都是包含9的数字）。

输入

第一行为一个数字 T(0 < T <= 100) 表示数据组数。
	之后的 T 行，每行包含两个数 a 和 b(0 <= a <= b <= 10 ^ 10000)。

	输出

	对每组数据输入，输出一个数字，表示 a 到 b 之间的数字中(包括a和b)，有多少个数字是包含9的。(注意：答案可能很大)
*/

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#if defined(_WIN32) && !defined(__cplusplus)
#define inline __inline
#endif

#include <stdio.h>

typedef int		BOOL;
#define TRUE	1
#define FALSE	0
#define MaxBitNum 1300

const int Base = 100000000;

typedef struct {
	int Bits[MaxBitNum];
	int Length;
}BigNum;

static inline void UpdateLength(BigNum *num)
{
	for (int i = MaxBitNum - 1; i >= 0; i--)
	{
		if (num->Bits[i] != 0)
		{
			num->Length = i + 1;
			return;
		}
	}
}

// 打印一个高精度数字
static inline void PrintNum(const BigNum *num)
{
	printf("%d", num->Bits[num->Length - 1]);
	for (int i = num->Length - 2; i >= 0; i--)
	{
		printf("%08d", num->Bits[i]);
	}
	printf("\n");
}

// 高精度数，加上一个整数；需满足1<=n<=10
static inline void plus(BigNum *num, int n)
{
	int carry = 0;

	int temp = num->Bits[0] + n + carry;
	num->Bits[0] = temp % Base;
	carry = temp / Base;

	for (int i = 1; carry != 0 && i < num->Length; i++)
	{
		int temp = num->Bits[i] + carry;
		num->Bits[i] = temp % Base;
		carry = temp / Base;
	}
	num->Bits[num->Length] = carry;
	if (carry != 0)
	{
		num->Length++;
	}
}

// 高精度数，乘以一个整数；需满足1<=n<=10
static inline void mutiply(BigNum *num, int n)
{
	int carry = 0;
	for (int i = 0; i < num->Length; i++)
	{
		int temp = num->Bits[i] * n + carry;
		num->Bits[i] = temp % Base;
		carry = temp / Base;
	}
	num->Bits[num->Length] = carry;
	if (carry != 0)
	{
		num->Length++;
	}
}

// 两个高精度数想减；计算a-b，结果存放在c中
static inline void minus(const BigNum *a, const BigNum *b, BigNum *c)
{
	int borrow = 0;
	for (int i = 0; i < a->Length; i++)
	{
		int temp = a->Bits[i] - b->Bits[i] - borrow;//上次的进位
		if (temp < 0)
		{
			borrow = 1;
			temp += Base;
		}
		else borrow = 0;
		c->Bits[i] = temp;
	}
	UpdateLength(c);
}

// 从缓冲区读取数字，并且计算0~该数字之间含有9的数字的个数
static inline void ReadNumAndCountNine(BigNum *num, BOOL bIncludeBoundary)
{
	BigNum tempTen = {{0},1};
	BigNum tempNine = {{0},1};

	BOOL bGotHighestNine = FALSE; // 已经找到了最高位的9
	while (1)
	{
		char ch = getchar();
		if (ch == ' ' || ch == '\n')break;
		int bit = ch - 48;

		mutiply(&tempTen, 10);
		plus(&tempTen, bit);

		mutiply(&tempNine, 9);
		if (!bGotHighestNine) plus(&tempNine, bit);
		if (bit == 9 && !bGotHighestNine) bGotHighestNine = TRUE;
	}

	if (bGotHighestNine && bIncludeBoundary) plus(&tempTen, 1);
	minus(&tempTen, &tempNine, num);
}

int main()
{
	int n;
	scanf("%d\n", &n);

	for (int i = 0; i < n; i++)
	{
		BigNum a = {{0},1}; // 存放0~a的含有9的数字的个数
		BigNum b = {{0},1}; // 存放0~b的含有9的数字的个数
		BigNum c = {{0},1}; // 存放a-b，即为所求答案

		ReadNumAndCountNine(&a, FALSE);
		ReadNumAndCountNine(&b, TRUE);

		minus(&b, &a, &c);
		PrintNum(&c);
	}

	getchar();
}
